Python 뽀개기
-
Print - 프린트다음에 오는 글자들을 출력
- print( “Hello World!“)
-
Data Type
- Integer - 정수
- Float - 소수점이 들어간 숫자
- Complex Num - 실수+ 허수 복소수
- String 문자
- Boolean 조건문 평가값 T/F
-
Variable
- 변수 지정 하고 변수 수정 자유로움
- 변수이름 = 변수값
- 변수 이름 법칙
- 변수 이름은 영어 알파벳과 숫자 그리고 underscore (_) 으로만 구성될 수 있습니다.
- 변수 이름 첫글자는 알파벳이나 underscore로만 시작해야 합니다. 숫자로는 시작될 수 없습니다.
- 영어 알파벳은 대문자와 소문자가 구분이 됩니다 (case sensitive).
-
String
- fomatting
-
%-formatting - 코드 가독성이 떨어짐
>>>name = "Eric" age = 74 "Hello, %s.You are %s." % (name, age) 'Hello Eric. You are 74.'` -
str.format() - 인수가 많아질 경우 복잡해지기 마찬가지
`>>> person = {‘name’: ‘Eric’, ‘age’: 74}
>>> "Hello, {name}. You are {age}.".format(**person) 'Hello, Eric. You are 74.'`f-String https://realpython.com/python-f-strings/#arbitrary-expressions
>>> name = "Eric">>> age = 74 >>> f"Hello, {name}. You are {age}. "'Hello, Eric. You are 74.'`- 단순, 응용력 좋음, 멀티라인,
- Quotation Mark 1, 2, 3개의 ” “이 앞뒤로 붙어도 된다.
- Dictionaries 데이터도 텍스트에 삽입
- Note - 딕셔너리 데이터 키 이름이 텍스트 인용 부호와 같으면 오류
-
comedian = {‘name’: ‘Eric Idle’, ‘age’: 74} f’The comedian is {comedian[‘name’]}, aged {comedian[‘age’]}. ’ File ”
”, line 1 f’The comedian is {comedian[‘name’]}, aged {comedian[‘age’]}.’ ^SyntaxError: invalid syntax` 참이 되려면 아래처럼 f”The comedian is {comedian[‘name’]}, aged {comedian[‘age’]}.” ‘The comedian is {comedian[“name”]}, aged {comedian[“age”]}.’
- Braces 다중 괄호 가능하다
- 앞뒤각각 3개이상일 경우에 앞뒤로 2개 가능
-
>>> f"{{74}}" '{74}' - f string expression 부분에 ” 삽입은 불가능하다.
- 문자연결
- print(“Hello, ” + “World”)
- name = input() print(f”Hello, {name}“)
- multiple line 표현에는 앞뒤로 “*3 을 붙인다
-
Number
- 따옴표 들어가면 안됨. “100” ≠ 100
- 문자열과 숫자열의 계산 안됨
- 수학연산
-
가감승제
- 정수나누기 정수값으로 떨어지게 반내림을 한다.
7 // 3 = 2 - % : 나누고 나머지 값 표현
- += 3: 변수에 값을 더하고 변수로 지정
- -= 3: 변수에서 값을 뺌 값을 지정
- *= : 변수에 값을 곱한값을 변수로 지정
- /= : 변수를 값으로 나눈 결과를 변수로 지정
- 정수나누기 정수값으로 떨어지게 반내림을 한다.
-
사칙연산 우선순위!
- ( )
- ** 제곱!
- *, / , 그리고 %
-
- 와 -
-
white space = indention!!
- js는 괄호로 종속성을 표현하지만 python은 들여쓰기로 종속성을 보여준다.
-
If statement
if expression: codes to execute if 2 + 2 == 4: print(f"산수는 어렵지 않아요!")- elif and Else
-
elif = else if
- if 구문과 연결되어 사용, if 다음에 사용이 가능하다.
- if 가 false 일 경우 실행 true 면 if 에서 끝남
-
else
- if 나 , else if 가 false 일 경우 실행, 별도의 조건이 필요없음
- Testing condition
-
and : 여러 조건문 연결
- 모든 조건문이 true 여야 한다. 하나라도 false 가 있으면 실행이 안됨
-
or
- and 의 반대, 테스트 조건중 하나라도 true 이면 코드가 실행이 됨
- Nested If Statements
- 반복되는 컨디션이 있을때는 nested if statemens 즉 중첩되는 if 구문을 사용
- (간격)으로 구분
-
2단계 이상 중첩을 하면 가독성이 너무 떨어지기 때문에 일반적으로 2단계 이상은 잘 하지 않는다.
if status == "학생": if year >= 3: print("취업이 곧 다가온다") elif year == 2: print("그래도 아직 놀 시간이 있네..") elif year < 2: print("한창 놀때지..") else: print("열심히 공부 해서 대학교 부터 가라!")
-
비교 연산자
- == : 같다
- != : 다르다
- ”>”: 크다 *string 도 > 으로 비교가능하다 .
- < : 작다
- ”>=” : 크거나 같다.
- <= : 작거나 같다.
-
Comment
- #으로 시작한다
- 멀티라인삽입 - 가능하나 보통 #으로 처리한다.
'''This is a multiline comments. 이렇게 여러 줄에 걸쳐서 주석을 삽입하는게 가능합니다...'''best practice는 주석은 최소한으로 사용하는 것
-
Function
- 반복코드의 효과적 사용
- 코드의 가독성 향상
def 함수명(parameter): 문장1 문장2 … 문장N [return 리턴값]
parameter 와 return 은 optional
-
parameter
-
positional arguments
- 순서대로 값이 parameter로 함수에 전해지는 경우
-
keyword arguments
- 순서 대신에 parameter 이름으로 맞추어서 값을 전해준다.
- 가독성 향상
- 실수 가능성 줄임
-
Mixing positional arguments and keyword arguments 두개를 섞는 것도 가능함
- keyword arguments 는 순서가 바뀌어도 상관 없지만 positional arguments 부분은 순서를 지켜줘야 한다
-
Parameter Default Value
- Default 값이 정의된 paramter는 함수가 호출될때 값이 넘겨지 않아도 괜찮다.
- 값이 넘겨지 않은 경우 default 값이 자동으로 넘겨지게 된다.
- default 값이 정의된 parameter가 default 값이 정의 되지 않은 parameter 보다 먼저 위치해 있으면 안됨 syntax 에러 표현
-
List
- string, number, boolean 등 모든 타입의 값을 저장할 수 있다.
- samlple
korea_provinces = ["강원도", "경기도", "경상도", "전라도", "충청도"]구성
- variable 변수명
- Element 구성 요소
- index
- 인덱스는 0부터 시작
- index의 마지막은 n-1 (n은 list의 총 길이)
- 소환은 ListName[index]
- Adding And Changing Elements To List
-
Append :한개의 엘리먼트
(element)
-
: 한개 이상의 엘리먼트 추가
- list1 = list1 + list2
- 새로 생성된 list를 변수에 다시 지정해 주지 않으면 기존 list들은 수정이 되지 않은 상태로 남아있게 된다.
-
insert
- 원하는 위치에 element를 삽입
cities = [ "서울특별시", "부산광역시", "인천광역시", "대구광역시", "대전광역시" ] cities.insert(1, "제주특별자치도 제주시") <= 부산광역시 자리( cities[1]) 에 채워넣음, 나머지 뒤로 한칸씩 밀린다. cities = [ "서울특별시","제주특별자치도 제주시", "부산광역시", "인천광역시", "대구광역시", "대전광역시" ] -
Empty List
- 비어있는 대괄호( )로 생성
-
Updating Elements
- 수정하고자 하는 element의 index 값을 통해 list에서 element를 선택한 후 새로운 값을 지정
cities = [ "서울특별시", "부산광역시", "인천광역시", "대구광역시", "대전광역시",]cities[2] = "경기도 성남시" - List Slicing
- 리스트의 일부분을 따로 copy
-
- slicing은 오리지널 list를 수정하는게 아니라, 새로운 list를 만들어 낸다
- sample
list_name[start : stop] - start와 stop에는 정수만 들어가야 한다! 2.0 도 안됨!!
-
Slicing Steps
- list_name[start : stop : step]
- optional
-
Slicing Tip
- start index를 빈칸으로 남겨두면 해당 list의 첫 요소 부터 시작
- stop index를 빈칸으로 남겨두면 start index 부터 끝까지 가져옴
- Deleting Elements From List
- del ListName[indexNumber]
- Listname.remove(Element)
-
Tuples
- List는 수정이 가능하지만 tuple은 한번 선언되면 수정이 불가능
- […] => list , (…) => tuples
- 2개에서 5개 사이의 요소들을 저장할때 사용
- 특정 데이터를 ad hoc(즉석적으로) 하게 표현하고 싶을때 사용
- List의 요소들로 tuple을 사용
cords = [ (4,4), (5,2), (-2, 2), (-3, -4) ] - 인덱스 할당으로 데이터 입력이 불가능하다.
tuple= (value,...) (가능)``tuple[n] = value (불가능)
-
Set
- list의 친척
- ordering이 없다.
- 순서가 없으므로 indexing도 없다.
- 중복값이 존재하지 않는다. 중복값 입력시 새로운 요소가 이전 요소 대신함
- Set 생성하는 법
-
중괄호 ({ }) 사용
set1 = {1, 2, 3} -
set() 함수
set2 = set([1, 2, 3])- set를 만들기 위해서는 list를 parameter로 전달
- set() 함수를 사용해서 set를 만드는 경우는 list를 set로 변환하고 싶을 때
- Set에서 새로운 요소 추가
my_set = {1, 2, 3} my_set.add(4)print(my_set)> {1, 2, 3, 4}- Set에서 요소 삭제
my_set = {1, 2, 3} my_set.remove(3)print(my_set)> {1, 2}- Look Up : value 존재여부 알아보기
my_set = {1, 2, 3} if 1 in my_set: print("1 is in the set") > 1 is in the set if 4 not in my_set: print("4 is not in the set") >4 is not in the set- Intersection (교집합) & Union (합집합)
-
교집합은 & 키워드 혹은 intersection
set1 = {1, 2, 3, 4, 5, 6} set2 = {4, 5, 6, 7, 8, 9} print(set1 & set2) > {4, 5, 6} print(set1.intersection(set2)) > {4, 5, 6} -
합집합은 | 키워드 혹은 union 함수
print(set1 | set2) > {1, 2, 3, 4, 5, 6, 7, 8, 9} print(set1.union(set2)) > {1, 2, 3, 4, 5, 6, 7, 8, 9}
-
Dictionary
- object 는 키에 스트링 표현을 안붙여도 입력이 가능했는데 Dictionary는 그러지가 않는다.
- sample
-
my_dic = { "key1" : "value1", "key2" : "value2"}
Dictionary에서 요소(element) 읽어들이기
- DictionaryName[“key Name”]
- Elements add
DictionaryName[New_Key]=new_value- 동일한 key가 이미 존재할 경우 새로운 값이 대체한다
- Elements fix
DictionaryName[Key] = fixed Element.- Elements remove
del DictionaryName[Key]- Looping
-
for each_key in DictionaryID
- 딕셔너리의 키값들을 리턴
-
for each_key in DictionaryID.values()
- 밸류값들을 리턴
-
Looping Dictionary With Both Keys And Values
- for each_key, each value in DictionaryID.items()
- Dictionary의 items 함수는 key와 value를 tuple로 리턴
- Complex Dictionary
-
List of Dictionaries
- 손쉽게 여러 dictionary들을 grouping
- 특정 dictionary 접근시 코드와 실행 시간이 길어진다.
-
Nested Dictionary
- 원하는 데이터의 키값으로 바로 찾을 수 있다.
-
For Loops
for element in list: do_something_with_element- For 문은 tuple, set 등에서도 사용이 가능하다.
- Break
- 다음 interation으로 넘어가지 않고 for 구문에서 빠져나옴
- Continue
- for 문 안의 추가된 코드 실행안시키고 interation으로 넘어가고 싶을때는 continue
- Nested For Loops
numbers1 = [1, 2, 3, 4, 5] numbers2 = [10, 20, 30, 40, 50] for num1 in numbers1: for num2 in numbers2: print(f"{num1} * {num2} == {num1 * num2}") -
While Loops
- 특정 조건문이 True 일 경우에만 코드블록을 반복 실행
-
while <조건문>: <수행할 문장1> <수행할 문장2> <수행할 문장3> ... <수행할 문장N>
number = 0 while number <= 10: print(number) number += 1
0…10
Break & Continue - For문과 동일하게 break는 while문을 강제종료 - continue는 다음 iteration으로 넘어갑니다. - ```python number = 0 while number <= 10: if number == 9: break elif number <= 5: number += 1 continue else: print(number) number += 1 > 678- While Else
- while의 조건문이 False 이면 실행
-
while <조건문>: <수행할 문장1> <수행할 문장2> <수행할 문장3> ... <수행할 문장N> else: <while문이 종료된 후 수행할 문장1> <while문이 종료된 후 수행할 문장2> <while문이 종료된 후 수행할 문장3> ... <while문이 종료된 후 수행할 문장N>